# -*- coding: utf-8 -*-

"""
Moduł odpowiadający za podstawowe ustawienia programu, 
umożliwia wprowadzanie danych przez użytkownika jak i 
wykorzystanie domyślnego zestawu ustawień.

B{Moduł zawiera:}
    1. Klasa Options
        
"""

from __future__ import unicode_literals
import wx



class Options(object):
    """
    Klasa przechowująca globalne ustawienia symulacji zderzeń sprężystych.
    """
    
    # domyślne opcje symulacji
    DefaultGravityOn = True
    """
    Zmienna odpowiadająca za włączenie/wyłączenie działania grawitacji, 
    standardowo jest włączona.
    """
    DefaultGravitationalAcceleration = 9.80665     # [m/s^2]
    """
    Zmienna odpowiadająca za wartość przyśpieszenia ziemskiego, 
    wynosi ono 9.80665 [m/s^2]
    """
    DefaultGravityAngle = 270                      # [*]
    """
    Zmienna odpowiadająca za wartość kąta padania grawitacji, 
    jest on liczony od dodatniej osi X w kierunku przeciwnym 
    do ruchu wskazówek zegara i standardowo wynosi 270[*]
    """
    DefaultCoefficientOfRestitution = 0.7          # (0,1)
    """
    Zmienna odpowiadająca za wartość współczynnika sprężystości w zakresie <0,1>, 
    standardowo wynosi on 0.7
    """
    
    #
    DefaultBallVelocityMin = 150                   # [m/s]
    """
    Zmienna odpowiadająca za minimalną, możliwą do ustawienia prędkość początkową piłki, 
    standardowo =150 [m/s].
    """
    DefaultBallVelocityMax = 300                   # [m/s]
    """
    Zmienna odpowiadająca za maksymalną, możliwą do ustawienia prędkość początkową piłki, 
    standardowo =300 [m/s].
    """
    DefaultBallRadiusMin = 20                      # [px]
    """
    Zmienna odpowiadająca za minimalny, możliwy do ustawienia promień piłki, standardowo =20.
    """
    DefaultBallRadiusMax = 20                      # [px]
    """
    Zmienna odpowiadająca za maksymalny, możliwą do ustawienia promień piłki, 
    standardowo =20.
    """
    DefaultBallMassMin = 1                         # [kg]
    """
    Zmienna odpowiadająca za minimalną, możliwą do ustawienia masę piłki, 
    standardowo =1 [kg].
    """
    DefaultBallMassMax = 1                         # [kg]
    """
    Zmienna odpowiadająca za maskymalną, możliwą do ustawienia masę piłki, 
    standardowo =1 [kg].
    """
    #
    DefaultNumberOfBalls = 5
    """
    Zmienna odpowiadająca za liczbę piłek, standardowo =5.
    """
    
    
    # opcje symulacji ustawiane przez użytkownika
    GravityOn = DefaultGravityOn
    """
    Zmienna odpowiadająca za włączenie/wyłączenie działania grawitacji.
    """
    GravitationalAcceleration = DefaultGravitationalAcceleration
    """
    Zmienna odpowiadająca za wartość przyśpieszenia ziemskiego [m/s^2].
    """
    GravityAngle = DefaultGravityAngle
    """
    Zmienna odpowiadająca za wartość kąta padania grawitacji, 
    jest on liczony od dodatniej osi X w kierunku przeciwnym 
    do ruchu wskazówek zegara [*].
    """
    CoefficientOfRestitution = DefaultCoefficientOfRestitution
    """
    Zmienna odpowiadająca za wartość współczynnika sprężystości w zakresie <0,1>.
    """
    #
    BallVelocityMin = DefaultBallVelocityMin
    """
    Zmienna odpowiadająca za minimalną, możliwą do ustawienia prędkość 
    początkową piłki w zakresie <0,300> [m/s].
    """
    BallVelocityMax = DefaultBallVelocityMax
    """
    Zmienna odpowiadająca za maksymalną, możliwą do ustawienia prędkość 
    początkową piłki w zakresie <0,300> [m/s].
    """
    BallRadiusMin = DefaultBallRadiusMin
    """
    Zmienna odpowiadająca za minimalny, możliwy do ustawienia 
    promień piłki<0,30>.
    """
    BallRadiusMax = DefaultBallRadiusMax
    """
    Zmienna odpowiadająca za maksymalny, możliwy do ustawienia 
    promień piłki<0,30>.
    """
    BallMassMin = DefaultBallMassMin
    """
    Zmienna odpowiadająca za minimalną, możliwą do ustawienia 
    masę piłki w zakresie <1,20> [kg].
    """
    BallMassMax = DefaultBallMassMax
    """
    Zmienna odpowiadająca za maksymalną, możliwą do ustawienia 
    masę piłki w zakresie <1,20>.
    """
    #
    NumberOfBalls = DefaultNumberOfBalls
    """
    Zmienna odpowiadająca za maskymalną, możliwą do ustawienia 
    liczbę piłek w zakresie <1,20> [kg].
    """
    
    
    FramesPerSecond = 50
    """
    Zmienna odpowiadająca za płynność animacji, określająca ilość klatek na
    sekundę, z jaką obliczane będą kolejne kroki symulacji.
    """
    PaintVelocities = True
    """
    Zmienna odpowiadająca za włączanie bądź wyłączanie wyświetlania wektorów
    prędkości piłeczek.
    """
    
        